In [30]:
import pylearn2.utils
import pylearn2.config
import theano
import neukrill_net.dense_dataset
import neukrill_net.utils
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
import holoviews as hl
%load_ext holoviews.ipython
import sklearn.metrics
In [23]:
def make_curves(model, *args):
curves = None
for c in args:
channel = m.monitor.channels[c]
c = c[0].upper() + c[1:]
if not curves:
curves = hl.Curve(zip(channel.epoch_record, channel.val_record),group=c)
else:
curves += hl.Curve(zip(channel.epoch_record, channel.val_record),group=c)
return curves
In [68]:
m = pylearn2.utils.serial.load(
"/disk/scratch/neuroglycerin/models/hopeful_recent.pkl")
In [69]:
make_curves(m,"valid_objective","valid_y_nll","train_y_nll")
Out[69]:
The train_y_nll
, valid_y_nll
and valid_objective
are in synchrony, suggesting we are not overfitting.
In [70]:
channel = m.monitor.channels["valid_y_nll"]
hl.Curve(zip(channel.epoch_record, channel.val_record),label="valid_y_nll")
Out[70]:
In [71]:
channel = m.monitor.channels["valid_y_nll"]
plt.plot(channel.epoch_record, channel.val_record)
Out[71]:
Hard to see whether it is still learning...
In [72]:
ch1 = m.monitor.channels["valid_y_nll"]
ch2 = m.monitor.channels["train_y_nll"]
hl.Curve(zip(ch1.epoch_record[-40:], ch1.val_record[-40:]),label="valid_y_nll")
Out[72]:
In [73]:
hl.Curve(zip(ch2.epoch_record[-40:], ch2.val_record[-40:]),label="train_y_nll")
Out[73]:
In [74]:
m = pylearn2.utils.serial.load(
"/disk/scratch/neuroglycerin/models/continue_hopeful_recent.pkl")
In [75]:
make_curves(m,"valid_objective","valid_y_nll","train_y_nll")
Out[75]:
In [ ]: